CXX = g++

CXXFLAGS = -O3 `pkg-config --cflags opencv`
RM = rm -f
OUTPUTDIR = ./bin
GARBAGE = *.o *.~*

#Program modules

LIBS = `pkg-config --libs opencv` -lswscale 
#`pkg-config --libs opencv` -lswscale 

# $@ - the current target
# $? - dependencies change from the last time?
# $^ - all dependencies without duplicates
# $+ - all dependencies
# %  - wildcard :
# %.c:
# 		gcc -o $* $*.c

.PHONY: all clean

all: ./bin/test

./bin/test: ./obj/test.o ./obj/SMInterface.o ./obj/SMIplImage.o ./obj/SMManager.o ./obj/preprocessing.o ./obj/preprocModules.o
	$(CXX) $+ -o $@  $(CXXFLAGS) $(LIBS) 

./obj/.o: ./src/.cpp
	$(CXX) $(CXXFLAGS) -c $< -o $@ $(LIBS)

./obj/test.o: ./src/test.cpp
	$(CXX) $(CXXFLAGS) -c $< -o $@ $(LIBS)

./obj/SMInterface.o: ./src/SMInterface.cpp
	$(CXX) $(CXXFLAGS) -c $< -o $@ $(LIBS)

./obj/SMIplImage.o: ./src/SMIplImage.cpp
	$(CXX) $(CXXFLAGS) -c $< -o $@ $(LIBS)

./obj/SMManager.o: ./src/SMManager.cpp
	$(CXX) $(CXXFLAGS) -c $< -o $@ $(LIBS)

./obj/preprocessing.o: ./src/preprocessing.cpp
	$(CXX) $(CXXFLAGS) -c $< -o $@ $(LIBS)

./obj/preprocModules.o: ./src/preprocModules.cpp
	$(CXX) $(CXXFLAGS) -c $< -o $@ $(LIBS)

clean: 
	$(RM) ./bin/*
	$(RM) ./obj/*


